import { createStore,applyMiddleware } from "redux";
// 引入日志中间件  调用dispatch 时会打印日志
import logger from "redux-logger";
// 引入异步中间件  调用dispatch 时可以接受函数作为参数
import { thunk } from "redux-thunk";

const initData = {
    name:'小明 ',
    age:22,
    sex:'男',
    banners:[]
}

// reducer 必须是纯函数 不能有副作用
//1 不能有异步操作
//2 不能有随机值
//3 不能直接修改入参,需复制一份再修改  返回新的

const reducer = (state = initData,action) => {
    console.log('执行',state,action)
    if(action.type === 'Type_name') {
        // state:最新的数据
        // action:对象  type为必须有的
        return {
            ...state,
            name:Math.random() + '小红'
        }
    }else if (action.type === 'Type_age') {
        return {
            ...state,
            age:state.age + 1
        }
    }else if (action.type === 'Type_banners') {
        return {
            ...state,
            banners:action.payload
        }
    }


    return state
}

// 创建 store 对象
// applyMiddleware: redux中间件 增强 dispatch 功能
const store = createStore (reducer,applyMiddleware(thunk,logger))


export default store